#pragma once
#include "cocos2d.h"
#include "Platform/PlatformHeader.h"
#include "Kernel/network/CSocketMission.h"

//////////////////////////////////////////////////////////////////////////
// 任务相关
//////////////////////////////////////////////////////////////////////////
class IGPTaskMissionSink
{
public:
	virtual ~IGPTaskMissionSink(){}
	virtual void onGPTaskQuerySuccess(DBO_GP_UserTaskInfo* pNetInfo){}
	virtual void onGPTaskAwardResult(DBO_GP_TaskAwardResult* pNetInfo){}
	virtual void onTaskOperatorSuccess(int type, const char* szDescription){}					//成功
	virtual void onTaskOperatorFailure(int type, const char* szDescription){}					//失败
};

//////////////////////////////////////////////////////////////////////////
// 任务相关
//////////////////////////////////////////////////////////////////////////
class CGPTaskMission
	: public CSocketMission
{
public:
	CGPTaskMission(const char* url, int port);
	// 设置回调接口
	void setMissionSink(IGPTaskMissionSink* pIGPTaskMissionSink);

	void QueryTask();
	void AwardTask(CMD_GP_GetAwardTask* pNetInfo);
	// 操作成功
	bool onSubOperateSuccess(void* data, int size);
	// 操作失败
	bool onSubOperateFailure(void* data, int size);
	//////////////////////////////////////////////////////////////////////////
	// ISocketEngineSink
public:
	virtual void onEventTCPSocketLink();
	virtual void onEventTCPSocketShut();
	virtual void onEventTCPSocketError(int errorCode);
	virtual bool onEventTCPSocketRead(int main, int sub, void* data, int dataSize);
private:
	//查询任务信息
	bool onSubQueryInfoResult(void* data, int size);
	//领取任务结果
	bool onSubAwardResult(void* data, int size);
private:
    // 回调
	IGPTaskMissionSink* mIGPTaskMissionSink;
	// 任务类型
	uint8				mMissionType;

	CMD_GP_GetAwardTask* taskAwardInfo;
}; // CGPTaskMission
